Polish Node Editor surfaces and custom node controls - #5687
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
The Node Editor used nested borders, strong background fills, and oversized spacing that competed with workflow content. This change simplifies node surfaces, makes custom-node controls quieter, and compacts the inspector, node library, cost disclosure, and canvas composer. Editable fields retain hover and focus emphasis, selected toggles retain a visible fill, and node selection, execution, and error states remain distinct. The composer now accounts for open side panels and wraps within its available width.
Verification
npm run test:affected: 522 suites passed, 1 failed. The existinguseTimelineAgentBridge.test.tsx:400failure expectssaw-leadand receiveswt1-prime-lead. This failure was also reproduced against the unchanged baseline during validation.NODE_OPTIONS=--max-old-space-size=8192 npm run typecheck: passed for web, Electron, and mobile. The first run exhausted Node’s default heap.npm run lintnpm run dev:nodetool -- harness gate --base origin/main: passed, no applicable automatic selfchecks. The gate listed the optional expensive and manual harnesses without running them.Rendered the editor at 1024, 1280, and 1600px widths, plus narrow inspector and node layouts. Checked keyboard slider adjustment and focus, toggle selection, blur mode changes, synth waveform selection, and the code editor. Added coverage for keyboard activation of the compact cost disclosure, preventing canvas shortcuts, and identifying incomplete estimates.
Rendered 101 custom node variants and four reference nodes in before/after sheets, then created all 105 on a single saved canvas using actual palette-drop events and default dimensions. No workflow was executed.
Remaining dimension issues
Draft pending the default-size follow-up: the single-canvas check confirmed lower controls are clipped at 280 × 280 in Levels (
nodetool.image.Levels), Color Grade (lib.image.color.Grade), CDL (lib.image.color_grading.CDL), and Exposure (lib.image.color_grading.Exposure). No control clipping was detected in the default state of the other 101 nodes. This is not exhaustive coverage of conditional controls or populated media states. Automatic content-driven node sizing is not implemented in this PR.